/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pagrafo.arquivo;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import pagrafo.grafo.Grafo;

/**
 *
 * @author Fabricio
 */
public class Arquivo {
    
    private Grafo g;
    private double capacidade;
    
    public Arquivo(String path) throws FileNotFoundException, IOException {
        g = new Grafo();


        FileReader reader;
        reader = new FileReader(path);
        BufferedReader leitor = new BufferedReader(reader);
        String linha = null;

        boolean lerDemanda = false;
        boolean lerCoord = false;
        boolean lerDimensao = false;
        boolean lerCapacidade = false;

        int i = 0;
        while ((linha = leitor.readLine()) != null) {

            if (linha.compareTo("DEPOT_SECTION ") == 0) {
                lerDemanda = false;
            } else if (linha.compareTo("DEMAND_SECTION ") == 0) {
                lerCoord = false;
            } else if (linha.compareTo("NODE_COORD_SECTION ") == 0) {
                lerCapacidade = false;
            } else if (linha.compareTo("EDGE_WEIGHT_TYPE : EUC_2D ") == 0) {
                lerDimensao = false;
            }


            if (lerDemanda) {
                String s[] = linha.split("\\ ");
                int demand = Integer.parseInt(s[1]);
                g.getVertice(i).setDemanda(demand);
                i++;
                //System.out.println("Demanda: " + demand);
            } else if (lerCoord) {
                String s[] = linha.split("\\ ");
                int x = Integer.parseInt(s[2]);
                int y = Integer.parseInt(s[3]);
                g.addVertice(x, y);
                //System.out.println("Add x = " + x + " y = " + y);
            } else if (lerCapacidade) {
                String s[] = linha.split("\\ ");
                capacidade = Double.parseDouble(s[2]);
                //System.out.println("Capacidade: " + capacidade);
            } else if (lerDimensao) {
                String s[] = linha.split("\\ ");
                int dimensao = Integer.parseInt(s[2]);
                g.setDimensao(dimensao);              
            }

            if (linha.compareTo("DEMAND_SECTION ") == 0) {
                lerDemanda = true;
            } else if (linha.compareTo("NODE_COORD_SECTION ") == 0) {
                lerCoord = true;
            } else if (linha.compareTo("EDGE_WEIGHT_TYPE : EUC_2D ") == 0) {
                lerCapacidade = true;
            } else if (linha.compareTo("TYPE : CVRP") == 0) {
                lerDimensao = true;
            }

        }
        g.calcularPesos();
    }

    public double getCapacidade() {
        return capacidade;
    }

    public Grafo getG() {
        return g;
    }
    
    
}
